package com.idroc.coelacanth.core.storage;

import java.util.List;

/**
 * 数据库记录
 * @author yuyoo (yuyoo4j@163.com)
 * @date 2009-12-15 上午09:28:12
 */
public interface Record {
	
	/**
	 * 存储实体
	 * @author yuyoo (yuyoo4j@163.com)
	 * @date 2009-12-15 上午10:14:18
	 */
	interface StorageEntry {

		/**
		 * 设置内容
		 * @param content -- 内容字节数组
		 */
		void setBytes(byte[] content);
		
		/**
		 * 获取内容
		 * @return -- 内容字节数组
		 */
		byte[] getBytes();
		
		/**
		 * 获取内容
		 * @return -- 内容字节列表
		 */
		List<Byte> listBytes();
		
		/**
		 * 追加内容到已有内容最后面
		 * @param content -- 追加内容
		 * @return -- 追加成功字节数
		 */
		int appendBytes(byte[] content);
		
		/**
		 * 获取内容长度
		 * @return -- 内容长度 
		 */
		long length();
	}

	/**
	 * 获取键
	 * @return -- 存储键
	 */
	StorageKey getKey();
	
	/**
	 * 获取值
	 * @return -- 存储值
	 */
	StorageValue getValue();
	
	void setKey(StorageKey key);
	
	void setValue(StorageValue value);
}
